package com.xmy.unsafe;

import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;

public class ListTest {
    public static void main(String[] args) {
        // 并发下ArrayList不安全。
        /**
         * 解决方案：
         * 1. 使用Vector()：List<String> list = new Vector<String>();
         * 2. 使用工具类Collections：List<String> list=Collections.synchronizedList();
         * 3. List<String> list = new CopyOnWriteArrayList<>();
         */
        //CopyOnWrite 写入时复制
        //多个线程调用的时候，list，读取的时候，固定的,写入(覆盖)
        //在写入时避免覆盖，造成数据问题！
        //读写分离
        List<String> list = new CopyOnWriteArrayList<>();
        for (int i = 0; i < 10; i++) {
            new Thread(()->{
                list.add(UUID.randomUUID().toString().substring(0,5));
                System.out.println(list);
            }).start();
        }
    }
}
